package com.example.demo.utils;

import com.google.code.kaptcha.Constants;

import javax.servlet.http.HttpServletRequest;

/**
 * .
 *
 * @author Li Zhiyuan
 * @since 2020/9/3
 */

/**
 * 注:这个类用来比对生成的验证码与用户输入的验证码。生成的验证码会自动加到session中，
 * 用户输入的通过getParameter获得。注意getParameter的key值要与页面中验证码的name值一致。
 */
public class CodeUtil {
    /**
     * 将获取到的前段参数转为String类型
     */
    public static String getString(HttpServletRequest request,String key){
        try {
            String result =request.getParameter(key);
            if (result!=null){
                result=result.trim();
            }
            if ("".equals(result)){
                result=null;
            }
            return result;
        }catch (Exception e){
            return null;
        }
    }

    /**
     * 验证码校验
     */
    public static boolean checkVerifyCode(HttpServletRequest request){
        //获取生成验证码
        //com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY
        String verifyCodeExpected=((String)request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY)).toUpperCase();//转大写

//        String verifyCodeExpected=(String)request.getServletContext().getAttribute(Constants.KAPTCHA_SESSION_KEY);

//        String verifyCodeExpected=request.getHeader("verifyCodeActual");
        //获取用户输入的验证码
        String verifyCodeActual=CodeUtil.getString(request,"verifyCodeActual").toUpperCase();//转大写
        if (verifyCodeActual==null || !verifyCodeActual.equals(verifyCodeExpected)){
            return false;
        }
        return true;
    }
}























